package com.ray.api.service;

import java.util.List;
import java.util.Map;

import com.ray.activiti.dto.ProcessTaskDto;
import com.ray.activiti.table.entity.ExtendActModel;
import com.ray.activiti.table.entity.ExtendActNodeset;
import com.ray.activiti.vo.ActNode;
import com.zjhc.flyhong.common.function.operator.LoginUser;

/**
 * 用户权限中心对外接口
 * @author ray
 *
 */
public interface ActivitiApiService {
	/**
	 * 开始流程
	 * @param taskDto
	 */
	void startFlow(ProcessTaskDto taskDto,ActNode startNode,LoginUser user) throws Exception;
	void startFlow(String busId, String actKey, String userids,String deployId,String defId,LoginUser user) throws Exception;
	/**
	 * 办理任务
	 * @param taskDto
	 */
	void HandleTask(ProcessTaskDto taskDto,LoginUser user) throws Exception;
	/**
	 * 驳回到发起人
	 * @param processTaskDto
	 * @param user
	 */
	void backStartUser(ProcessTaskDto processTaskDto, LoginUser user)throws Exception ;
	/**
	 * 结束流程
	 * @param processTaskDto
	 * @param user
	 * @throws Exception
	 */
	void stopFlow(ProcessTaskDto processTaskDto, LoginUser user) throws Exception;
    /**
     * 转办
     * @param processTaskDto
     * @param toUserId
     * @param user
     * @throws Exception
     */
	void turnToDo(ProcessTaskDto processTaskDto, String toUserId, LoginUser user)throws Exception ;
	/**
	 * 返回到上一级
	 * @param processTaskDto
	 * @throws Exception
	 */
	void backPreviousNode(ProcessTaskDto processTaskDto,LoginUser user) throws Exception;
	 /**
     * 根据流程key 获取业务可用的流程
     * @param actKey
     * @return
     */
	List<Map<String, Object>> queryFlowsByActKey(String actKey,LoginUser user);
	 /**
     * 获取
     * @param string
     * @return
     */
	ExtendActModel queryByDeployId(String string);
	  /**
     * 查询节点对应的id  
     * @param value
     * @param nodeId
     * @return
     */
	List<String> queryIds(String type, String nodeId);
	 /**
     * 更具模型id查询 配置开始节点
     * @param modelId
     * @return
     */
	ExtendActNodeset queryStartNodeByModelId(String modelId); 
   
}
